+++ /dev/null
-# Makefile for C source code
-#
-# Copyright (C) 2011 Colin Walters <walters@verbum.org>
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-libexec_PROGRAMS += ostreed
-
-ostreed_SOURCES = src/daemon/ostreed.c \
- src/daemon/ot-daemon.h \
- src/daemon/ot-daemon.c \
- $(NULL)
-
-ostreed_CFLAGS = $(AM_CFLAGS) -I$(srcdir)/src/libgsystem -I$(srcdir)/src/libotutil -I$(srcdir)/src/libostree -I$(srcdir)/src/daemon -DLOCALEDIR=\"$(datadir)/locale\" $(OT_INTERNAL_GIO_UNIX_CFLAGS)
-ostreed_LDADD = libotutil.la libostree.la $(OT_INTERNAL_GIO_UNIX_LIBS)
libgsystem_libs = $(OT_INTERNAL_GIO_UNIX_LIBS)
include src/libgsystem/Makefile-libgsystem.am
noinst_LTLIBRARIES += libgsystem.la
-include Makefile-daemon.am
include Makefile-otutil.am
include Makefile-libostree.am
include Makefile-ostree.am
+++ /dev/null
-/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
- *
- * Copyright (C) 2011 Colin Walters <walters@verbum.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Colin Walters <walters@verbum.org>
- */
-
-#include "config.h"
-
-#include "ostree.h"
-#include "ot-daemon.h"
-
-#include <string.h>
-#include <unistd.h>
-#include <stdlib.h>
-
-static OstreeDaemonConfig config;
-
-static GOptionEntry entries[] = {
- {
- "dummy-test-path", 0, 0, G_OPTION_ARG_FILENAME, &config.dummy_test_path, "Run against the given tree on the session bus", "path"},
- { NULL }
-};
-
-int
-main (int argc,
- char **argv)
-{
- OstreeDaemon *daemon = NULL;
- GError *error = NULL;
- GOptionContext *context = NULL;
-
- g_type_init ();
-
- context = g_option_context_new ("- OSTree system daemon");
- g_option_context_add_main_entries (context, entries, NULL);
-
- if (!g_option_context_parse (context, &argc, &argv, &error))
- goto out;
-
- daemon = ostree_daemon_new ();
-
- if (!ostree_daemon_config (daemon, &config, &error))
- goto out;
-
- g_main_loop_run (daemon->loop);
-
- out:
- ostree_daemon_free (daemon);
- if (error)
- {
- g_printerr ("%s\n", error->message);
- g_clear_error (&error);
- exit (1);
- }
- return 0;
-}
+++ /dev/null
-/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
- *
- * Copyright (C) 2011 Colin Walters <walters@verbum.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Colin Walters <walters@verbum.org>
- */
-
-#include "config.h"
-
-#include <gio/gio.h>
-#include <gio/gunixfdlist.h>
-
-#include <string.h>
-#include <stdlib.h>
-
-#include "ostree.h"
-#include "ot-daemon.h"
-
-static GDBusNodeInfo *introspection_data = NULL;
-
-static const gchar introspection_xml[] =
- "<node>"
- " <interface name='org.gnome.OSTree'>"
- " </interface>"
- "</node>";
-
-static void
-handle_method_call (GDBusConnection *connection,
- const gchar *sender,
- const gchar *object_path,
- const gchar *interface_name,
- const gchar *method_name,
- GVariant *parameters,
- GDBusMethodInvocation *invocation,
- gpointer user_data)
-{
-}
-
-static const GDBusInterfaceVTable interface_vtable =
-{
- handle_method_call,
- NULL,
- NULL
-};
-
-static void
-on_bus_acquired (GDBusConnection *connection,
- const gchar *name,
- gpointer user_data)
-{
- OstreeDaemon *self = user_data;
- guint id;
-
- self->bus = g_object_ref (connection);
-
- if (introspection_data == NULL)
- introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL);
-
- id = g_dbus_connection_register_object (connection,
- OSTREE_DAEMON_PATH,
- introspection_data->interfaces[0],
- &interface_vtable,
- NULL, /* user_data */
- NULL, /* user_data_free_func */
- NULL); /* GError** */
- g_assert (id > 0);
-}
-
-static void
-on_name_acquired (GDBusConnection *connection,
- const gchar *name,
- gpointer user_data)
-{
- OstreeDaemon *self = user_data;
- GError *error = NULL;
- GFile *repo_file = NULL;
-
- repo_file = g_file_get_child (self->prefix, "repo");
- self->repo = ostree_repo_new (repo_file);
- g_clear_object (&repo_file);
- if (!ostree_repo_check (self->repo, &error))
- {
- g_printerr ("%s\n", error->message);
- g_clear_error (&error);
- exit (1);
- }
-}
-
-static void
-on_name_lost (GDBusConnection *connection,
- const gchar *name,
- gpointer user_data)
-{
- exit (1);
-}
-
-OstreeDaemon *
-ostree_daemon_new (void)
-{
- OstreeDaemon *self = g_new0 (OstreeDaemon, 1);
-
- self->loop = g_main_loop_new (NULL, TRUE);
- self->ops = g_hash_table_new_full (g_int_hash, g_int_equal, NULL, NULL);
-
- return self;
-}
-
-void
-ostree_daemon_free (OstreeDaemon *self)
-{
- g_main_loop_unref (self->loop);
- g_hash_table_unref (self->ops);
- g_free (self);
-}
-
-gboolean
-ostree_daemon_config (OstreeDaemon *self,
- OstreeDaemonConfig *config,
- GError **error)
-{
- gboolean ret = FALSE;
- gboolean is_dummy = config->dummy_test_path != NULL;
-
- if (!is_dummy)
- {
- if (getuid () != 0)
- {
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
- "This program must be run as root");
- goto out;
- }
- }
-
- if (is_dummy)
- self->prefix = g_file_new_for_path (config->dummy_test_path);
- else
- self->prefix = g_file_new_for_path ("/sysroot/ostree");
-
- self->name_id = g_bus_own_name (is_dummy ? G_BUS_TYPE_SESSION : G_BUS_TYPE_SYSTEM,
- OSTREE_DAEMON_NAME,
- G_BUS_NAME_OWNER_FLAGS_NONE,
- on_bus_acquired,
- on_name_acquired,
- on_name_lost,
- self,
- NULL);
- ret = TRUE;
- out:
- return ret;
-}
+++ /dev/null
-/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
- *
- * Copyright (C) 2011 Colin Walters <walters@verbum.org>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- *
- * Author: Colin Walters <walters@verbum.org>
- */
-
-#ifndef __OSTREE_DAEMON__
-#define __OSTREE_DAEMON__
-
-#include <gio/gio.h>
-
-#define OSTREE_DAEMON_NAME "org.gnome.OSTree"
-#define OSTREE_DAEMON_PATH "/org/gnome/OSTree"
-#define OSTREE_DAEMON_IFACE "org.gnome.OSTree"
-
-G_BEGIN_DECLS
-
-typedef struct {
- char *dummy_test_path;
-} OstreeDaemonConfig;
-
-typedef struct {
- GMainLoop *loop;
- GFile *prefix;
-
- OstreeRepo *repo;
-
- GDBusConnection *bus;
-
- int name_id;
-
- guint32 op_id;
-
- GHashTable *ops;
-} OstreeDaemon;
-
-typedef struct {
- guint32 id;
- OstreeDaemon *daemon;
- char *requestor_dbus_name;
- GCancellable *cancellable;
-} OstreeDaemonOperation;
-
-OstreeDaemon *ostree_daemon_new (void);
-
-void ostree_daemon_free (OstreeDaemon *self);
-
-gboolean ostree_daemon_config (OstreeDaemon *self,
- OstreeDaemonConfig *config,
- GError **error);
-
-G_END_DECLS
-
-#endif